home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
015a
/
tlb_v120.zip
/
LASTBYTE.DOC
< prev
next >
Wrap
Text File
|
1991-07-31
|
153KB
|
3,662 lines
THE LAST BYTE MEMORY MANAGER (tm)
An Upper Memory Manager for MS-DOS
Version 1.20
Copyright (C) 1990-91
All Rights Reserved
by
KEY SOFTWARE PRODUCTS
440 Ninth Avenue
Menlo Park, California 94025
(415) 364-9847
The Last Byte Memory Manager is a trademark of Key Software Products.
MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation.
DR-DOS is a trademark of Digital Research Incorporated.
4DOS is a trademark of J.P. Software.
Hyperdisk is a trademark of HyperWare.
Other company trademarks are used with the company name.
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 2
CHAPTER 1 - INTRODUCTION
The Last Byte Memory Manager is a collection of software that
can provide up to 384k of additional memory to your computer in
the upper memory area between 640k and 1 meg. It does this by
using left-over shadow ram memory, existing fixed read/write
(RAM) memory, or by mapping expanded memory (EMS) pages into the
upper area.
With The Last Byte Memory Manager, device drivers, terminate and
stay resident (TSR) programs, MS-DOS disk buffers, and the
master environment can be moved up into upper memory, leaving
more conventional memory available for your application
programs. Depending on your hardware, you may also be able to
extend the total conventional memory from 640k to as much as
736k.
The Last Byte Memory Manager comes with utility programs that
use upper memory to create ram disks, print spoolers, command
line recal (history) buffers, emulated expanded memory, and TSR
"markers" (to facilitate TSR removal). But best of all, these
utilities can even use disabled shadow ram memory normally
hidden behind the display buffer, read-only memories (ROMs), and
other adapter cards.
1.1 Important Advantages
The Last Byte Memory Manager offers six significant advantages
over other MS-DOS Upper Memory Managers:
o The Last Byte Memory Manager uses very little
conventional memory: only 32 bytes for the kernel
(LASTBYTE.SYS), and another 32 bytes for each
device driver loaded into upper memory.
o The Last Byte Memory Manager will work with any
processor chip, even the 8088 used in the original
IBM PC. Many memory managers require a 386 cpu or
better.
o The Last Byte Memory Manager does not use protected
mode software. This means that unlike those that
do, The Last Byte Memory Manager is totally
compatible with any protected mode software, not
just Windows 3.0.
o The Last Byte Memory Manager doesn't require any
extended memory. Other memory managers depend on
the processor's ability to remap physical memory
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 3
from above 1MB into the upper memory area.
o On motherboards that use one of the supported
memory controller chips, The Last Byte Memory
Manager, unlike all other MS-DOS memory managers,
can use the unused shadow ram normally disabled by
the display buffer, ROMs or adapter cards. This
gives it the unique ability to use all 384k of
upper memory!
o The Last Byte Memory Manager does not slow down the
performance of your computer, both because it does
not incur the 5-10% execution overhead inherent in
protected mode, and because it uses regular
(full-speed) memory. (Some memory managers use the
actual EGA/VGA graphics buffer as MS-DOS memory,
but the display buffer memory of some EGA/VGA
adapter cards can be as much as six times slower
than regular memory.)
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 4
CHAPTER 2 - SYSTEM REQUIREMENTS
Fundamentally, The Last Byte Memory Manager requires version 3.0
or later of MS-DOS and some method of implementing memory in the
upper memory area between 640k and 1 meg. Any Intel (or
Intel-compatible) processor will do, including the original
Intel 8088 cpu. No extended memory is required.
2.1 Supported Hardware
To install The Last Byte Memory Manager, your computer must have
any one of the following:
o Fixed RAM memory already resident in the upper
area, or
o An expanded memory board (EEMS, LIM 3.2 EMS, or LIM
4.0 EMS), or
┌─────────────────────────────────────────────────┐
│ NOTE: Using a LIM 3.2 EMS board is not advised │
│ as a method of providing upper memory. It pro- │
│ vides only 64k of upper memory and prevents ap- │
│ plication software from using expanded memory. │
└─────────────────────────────────────────────────┘
o A 386sx, 386, 486, or 486sx processor and the
Microsoft Windows 3.0 or DOS 5 versions of
EMM386.SYS, or
o One of the following shadow ram controller chips:
Chips and Technologies:
82C212 - From the CS8221 NEAT (tm) chipset
82C222 - From the CHIPS/250 PS/2 50/60 chipset
82C230 - The PS/2 30 Single Chip Controller
82C235 - The SCAT (tm) Single Chip AT VLSI chip
82C241 - From the CS8223 LeAPset (tm) chipset
82C302 - From the CS8230 386/AT CHIPSet (tm)
82C307 - From the CS8231 386/AT CHIPSet (tm)
82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
82C322 - From the CHIPS/280 PS/2 70/80 chipset
82C351 - From the CS8233 PEAK DM CHIPSet (tm)
82C812 - From the CS8281 NEATsx (tm) chipset
82C836 - The SCATsx (tm) Single Chip AT VLSI chip
82C841 - From the CS8283 LeAPset-sx (tm) chipset
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 5
ETEQ Microelectronics:
82C491 - From the Cougar 386DX/486DX chipset
Forex Computer Corporation:
36C300 - From the FRX36C300/200 chipset
OPTi Electronics:
82C281 - From the Cache SX/AT chipset (w/posted write)
82C282 - From the Cache SX/AT chipset (w/o posted write)
82C382 - From the HiD/386 AT chipset
82C391 - From the 386WB PC/AT chipset
82C482 - From the HiB/486 AT chipset
Sun Electronics (SUNTAC):
62C202 - From the chipset 20 for 286
62C241 - From the chipset 24 for 386
62C251 - From the chipset 25 for 286 and 386sx
Symphony Laboratories:
82C361 - From the SL82C360 80386DX/SX chipset
82C461 - From the SL82C460 80486 chipset
Texas Instruments:
82411 - The Snake Single-Chip AT Controller
82S411 - The Snake+ Single-Chip AT Controller
United Microelectronics Corporation (UMC):
82C212 - From the UM82C210 386SX/286 AT Chip Set
82C481 - From the UM82C480 50Mhz 80486 Chip Set
┌─────────────────────────────────────────────────┐
│ NOTE: The UMC 82C212 is indistinguishable from │
│ the Chip & Technologies 82C212. CHIPSET and │
│ LASTBYTE.SYS will identify it as the latter. │
└─────────────────────────────────────────────────┘
VLSI Technology:
82C202 - From VLSI Technologies' PC/AT chipset
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 6
┌─────────────────────────────────────────────────┐
│ NOTE: There is a pin on the VLSI 82C202 that │
│ controls whether or not the shadow ram memory │
│ has been relocated above 1 meg as extended │
│ memory. This pin is usually connected to a │
│ jumper or DIP switch on the motherboard. It │
│ may be necessary to change the jumper or DIP │
│ switch setting to work properly with this chip. │
└─────────────────────────────────────────────────┘
Not all memory controller chips allow use of the entire 384k of
upper memory. Consult the appendix on "CHIPSET LIMITATIONS" for
further information.
2.2 Checking Compatibility Using CHIPSET
CHIPSET is a small program that simply checks to see if your
computer has one of the memory controllers required to use The
Last Byte Memory Manager.
A>CHIPSET
CHIPSET will identify the particular memory controller you have,
if any. If it can't find a memory controller, it will look for
fixed memory in the upper area or expanded memory as a means of
installing The Last Byte Memory Manager. To see the entire list
of what is supported, add a question mark to the command line,
as in:
A>CHIPSET ?
If your computer has one of the listed devices, then The Last
Byte Memory Manager should work on your computer. If your
computer uses another kind of chipset, it may not be supported
for one of the following reasons:
o Some chipsets do not provide shadow ram support.
Examples: VLSI Technologies 82C100 series
Western Digital chipsets
Texas Instruments TACT82300 series
Early Suntac chipsets (ST62BC001-6)
United Microelectronics Corp. UM82C231
o Some chipsets have shadow ram, but it can only be
put into either write-only mode (for copying rom
contents to ram), or read-only mode (to prevent
accidental writes into what's supposed to be a copy
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 7
of rom).
Examples: ACC Microelectronics chipsets
Headland Technologies chipsets
G2 chipsets
o Many device drivers and TSRs either use Direct
Memory Access (DMA) directly, or else they employ
disk buffers that MS-DOS accesses via DMA. The
hardware design of some memory controller chips
prevent DMA from accessing the shadow ram, and thus
loading this kind of software into shadow ram
memory is pointless.
Examples: VLSI Tech. VL82C286 & VL82C386 TOPCAT
o The Last Byte Memory Manager software is
table-driven, making it relatively easy to adapt to
different memory controller architectures, but
there are limits!
Examples: Zymos chipsets
United Micro. Corp. UM82C384, '388, '389
Forex Computer Corp. FRX36C100
Silicon Integrated System Corp. (SIS)
chipsets
o Some memory controllers are designed so that they
can be "locked" at the end of software
initialization, requiring a hardware reset to
unlock, and thus preventing The Last Byte Memory
Manager from accessing the controller.
Examples: Intel 82335, 82335SX
Some of these chips, however, have hardware EMS support and thus
many of their motherboards come with an EMS device driver
designed specifically to take advantage of this capability. So
in many cases, you can install this driver first, and then The
Last Byte Memory Manager can use it to manage the upper memory
area.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 8
CHAPTER 3 - DISTRIBUTION FILES
Version 1.20 of The Last Byte Memory Manager consists of the
following distribution files. Feel free to upload this package
to any bulletin board, but please be sure all original
(unmodified) distribution files are included in the upload.
CHIPSET.EXE A program to test your computer for compati-
bility with The Last Byte Memory Manager.
CLOCK.EXE A TSR program to display the current time in the
upper left-hand corner of the screen. (Requires
ANSI.SYS.)
COLS.40,80 Text files to be used to verify that ANSI.SYS has
been installed and is operating properly.
HIGHAPND.EXE A program to enable/disable an extension of conven-
HIGHAPND.SYS tional memory beyond 640k up to 704k or even 736k,
depending on your hardware configuration.
HIGHBFRS.EXE A program to put the MS-DOS 3.xx disk buffers
(i.e., as specified in the "BUFFERS=" command
of CONFIG.SYS) in upper memory.
HIGHDISK.SYS A device driver that creates a ram disk in
upper memory.
HIGHDRVR.SYS A device driver used to load other device
drivers into upper memory.
HIGHEMS3.SYS A pair of device drivers that emulate expanded
HIGHEMS4.SYS memory in upper memory.
HIGHENV.EXE A program to move the master environment from
conventional memory to upper memory.
HIGHHOLE.EXE A program to locate empty space in shadowed ROMs
that can be converted to free High-DOS memory.
HIGHINST.EXE Exactly like HIGHTSR, except used with the
"INSTALL=" command in a CONFIG.SYS file.
HIGHKEY.EXE A command line recall editor similar to the DOS 5
DOSKEY program, but which can store the command
line history in bank-switch memory.
HIGHMARK.EXE A program to mark TSR's so that they may be
removed from upper memory at a later time.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 9
HIGHMEM.EXE A program to display a map of upper memory usage.
HIGHSPLR.EXE A program to create a printer spooler in upper
memory.
HIGHTSR.EXE A program to load TSR's into upper memory.
HIGHUMM.DOC A device driver that application programmers may
HIGHUMM.SYS use to access upper memory from their own pro-
grams. (For a detailed specification of the soft-
ware interface, see the information in the file
HIGHUMM.DOC.)
HIGHUNDO.EXE A program to remove TSR's (and their associated
mark) that have been previously marked with
HIGHMARK.
LASTBYTE.DOC This text file.
LASTBYTE.SYS A device driver that must be loaded before any
other software of The Last Byte Memory Manager.
LICENSE.EXE A program to install your name and personal
access key into the file LASTBYTE.SYS.
ORDERFRM.DOC A text file containing individual and site
license order forms.
WHATSNEW.120 A text file describing changes since the
previous version.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 10
CHAPTER 4 - GETTING STARTED
The first thing to do is to be sure that The Last Byte Memory
Manager will work on your computer. You can do this by simply
running the program called CHIPSET. Once you have determined
that The Last Byte Memory Manager will work, you should then
install it on a floppy according to the instructions that follow
to verify that you can boot and operate your computer reliably.
4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE
To install The Last Byte Memory Manager on a floppy diskette,
perform the following steps:
Step 1: Use the MS-DOS FORMAT command with the /S
option to prepare a bootable floppy disk.
Step 2: Copy the files LASTBYTE.SYS, HIGHDRVR.SYS,
HIGHTSR.EXE, HIGHMEM.EXE, HIGHMARK.EXE,
HIGHUNDO.EXE, CLOCK.EXE, COLS.40, and COLS.80
onto the diskette.
Step 3: Copy the MS-DOS device driver file ANSI.SYS
onto the diskette.
Step 4: Create a CONFIG.SYS file on the floppy that
contains the lines:
DEVICE=LASTBYTE.SYS ?
DEVICE=HIGHDRVR.SYS ANSI.SYS
┌─────────────────────────────────────────────────┐
│ NOTE: If your installation is dependent on the │
│ presence of expanded memory, then you must pre- │
│ cede these lines with a similar line to install │
│ your expanded memory device driver before in- │
│ stalling LASTBYTE.SYS. │
└─────────────────────────────────────────────────┘
The "?" in the first line is intentional - it
directs The Last Byte Memory Manager to
display what it finds in the upper memory
address space.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 11
Step 5: Create an AUTOEXEC.BAT file on the floppy that
contains the lines:
HIGHMARK
HIGHTSR CLOCK
Step 6: Boot from the floppy.
┌─────────────────────────────────────────────────┐
│ NOTE: Some memory controller chips provide a │
│ setup option to use some of the shadow ram as │
│ extended memory by relocating it above the │
│ 1 Meg boundary. This option must be disabled │
│ in the CMOS Setup Configuration Menu. │
└─────────────────────────────────────────────────┘
If everything goes ok, you'll see a sign-on box that looks
something like the following:
╔═══════════════════════════════════════════════════════════════════╗
║ THE LAST BYTE MEMORY MANAGER (tm) Version 1.20a ║
║ Copyright (C) 1990-91, Key Software Products, All Rights Reserved ║
║ Licensed for EVALUATION ONLY ║
╟───────────────────────────────────────────────────────────────────╢
║ 25.0 Mhz 80386 with Chips & Technologies 82C302c ║
╟───────────────────────────────────────────────────────────────────╢
║ Address Range Size Width Bandwidth Description ║
║ 00000-9FFFF 640 KB 32 bits 38.0 MB/Sec Conventional Memory ║
║ A0000-FFFFF 384 KB 32 bits 38.0 MB/Sec Shadow Ram Memory ║
║ A0000-BFFFF 128 KB 16 bits 3.1 MB/Sec VGA Display Buffer ║
║ C0000-C7FFF 32 KB 16 bits 3.1 MB/Sec Adapter R/O Memory ║
║ C8000-CB7FF 14 KB 8 bits 1.3 MB/Sec Adapter R/O Memory ║
║ CB800-CBFFF 2 KB 8 bits 1.3 MB/Sec Adapter R/W Memory ║
║ F0000-FFFFF 64 KB 16 bits 3.1 MB/Sec Bios (Boot) Rom ║
╟───────────────────────────────────────────────────────────────────╢
║ Conventional High-DOS Bank-Switch Shadowed Roms Excluded ║
║ 640k 32k 32k 96k 224k ║
╟───────────────────────────────────────────────────────────────────╢
║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
╚═══════════════════════════════════════════════════════════════════╝
If your computer stops before displaying the entire box shown
above, or if it fails to operate properly after booting, this
may be because The Last Byte Memory Manager failed to identify
one of your installed adapters that uses some portion of the
upper memory address space. If this happens, you'll probably
need to use an "EXCLUDE=" option on the LASTBYTE.SYS command
line to manually disable the corresponding region(s) where
conflict occurs. To temporarily get around this problem, you
can reboot and manually bypass all The Last Byte Memory Manager
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 12
device drivers and TSR's by simultaneously holding down the
<left shift>, <alt>, and <ctrl> keys during the boot sequence.
After AUTOEXEC.BAT is finished, you'll see the current time
displayed in inverse video in the upper left-hand corner of your
screen. This verifies that HIGHTSR has successfully loaded
CLOCK into upper memory. You can verify that ANSI.SYS is
installed and operating by using the commands:
TYPE COLS.40
{switches display to 25 rows by 40 columns}, or
TYPE COLS.80
{switches display to 25 rows by 80 columns}.
(These commands will display garbage on the screen if ANSI.SYS
has not been installed.)
Once you are convinced that The Last Byte Memory Manager is
working satisfactorily, you may copy it to your hard disk and
modify the CONFIG.SYS and AUTOEXEC.BAT files there accordingly.
4.2 Mapping Upper Memory with HIGHMEM
Now run HIGHMEM to display a map of upper memory. Depending on
what adapter cards you have installed, HIGHMEM's output should
look something like that shown below.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 13
HIGHMEM v1.20a (C) Key Software Products 1990-91. All Rights Reserved.
MCB Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch Total
──── ─────────── ───────────────────────── ──────── ───────── ───────
B000 A0000-AFFFF Reserved Memory Group:
B79D A0000-A042F ╠═TSR Marker <1> 1,072
B002 A0000-A042F ║ └─8-bit EGA Graphics Buffer 1,072
B79B A0430-A7FFF ╠═8-bit EGA Graphics Buffer [ 31,696] [31,696]
B004 A8000-AFFFF ╚═8-bit EGA Graphics Buffer 32,768
B006 B0070-B10CF ANSI [DEV] 4,192 4,192
B10D B10E0-B112F CLOCK [ENV] <1> 80 80
B113 B1140-B12EF CLOCK [TSR] <1> 432 432
B12F B1300-B79AF [∙∙∙Free∙∙∙] [ 26,288] [26,288]
B79F B7A00-B7EFF LASTBYTE [DEV] 1,280 1,280
B7FE B8000-FFFFF Reserved Memory Group:
B7F0 B8000-BFFFF ╠═8-bit EGA Text Buffer 32,768
B7F2 C0000-C3FFF ╠═Shadowed 8-bit Rom 16,384
B7F4 C4000-C7FFF ╠═Excluded Block 16,384
B7F6 C8000-CB7FF ╠═8-bit Adapter Rom 14,336
B7F8 CB800-CBFFF ╠═8-bit Adapter Ram 2,048
B7FA CC000-EFFFF ╠═Excluded Block 147,456
B7FC F0000-FFFFF ╚═Shadowed 16-bit Bios 65,536
─────── ─────── ───────
Upper Memory In Use: 5,984 1,072 334,736
[Free Upper Memory]: 26,288 31,696 57,984
MCB Overhead: 496 n/a 496
─────── ─────── ───────
Total Upper Memory: 32,768 32,768 393,216
This listing is for a computer with a 8-bit EGA display adapter
and an 8-bit SCSI hard disk adapter. The "Shadowed 8-bit Rom"
at C0000-C3FFF is the EGA Bios and the "8-bit Adapter Rom" and
"8-bit Adapter Ram" are on the SCSI adapter card.
The column labelled "Bnk-Swtch" shows which entries can be used
as bank-switch memory for a ram disk, a print spooler, emulated
EMS memory, or TSR markers.
Numbers enclosed in brackets (e.g., "[ 26,128]") refer to memory
that is available for use. Once you have licensed your copy of
The Last Byte Memory Manager, the "Excluded Block" shown above
would be added to the free High-DOS memory pool, and the other
entries labelled "EGA ... Buffer" would be added to the free
bank-switch memory pool.
The column labelled "Mark" is used in conjunction with HIGHMARK
and HIGHUNDO. In particular, you may have wondered why the
command HIGHMARK was included in the AUTOEXEC.BAT file. Since
it was executed before running HIGHTSR CLOCK, you are now able
to remove the clock from memory by simply running HIGHUNDO.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 14
Paging the output of HIGHMEM
You may use the "/Page" (or simply "/P") option of
HIGHMEM to force the output to pause after each screen
full.
4.3 Running the LICENSE Program
The Last Byte Memory Manager is distributed as a fully
functional set of software. In its original form, you will be
able to use all the features, but with three restrictions:
o The amount of upper memory available to you will be
limited to 32k of High-DOS memory and another 32k
of Bank-Switch memory, and
o The maximum number of device drivers and/or TSRs
will be limited to 2.
o The HOLE option of LASTBYTE.SYS is not available.
Access to the rest of upper memory requires that your name and a
personal eight-character access key be inserted into the file
LASTBYTE.SYS. The access key may be obtained directly from Key
Software Products or one of the authorized distributors listed
at the end of this document. Installation of the key is
accomplished by the program called LICENSE.EXE that is included
in the distribution.
The LICENSE program must be run on the same computer on which
you intend to install The Last Byte Memory Manager. LICENSE
computes a hardware "signature" and installs that signature into
LASTBYTE.SYS; when invoked, it recomputes the signature and
compares it against the one inserted by LICENSE. If the two do
not agree, LASTBYTE.SYS will issue an error message and refuse
to install.
LICENSE tries to determine the memory controller type and then
records it in the LASTBYTE.SYS file. This works fine on most
systems, but occassionally the necessary sequence of tests that
LICENSE must perform will cause the computer to "hang". You can
avoid this test by manually specifying the memory controller
type on the command line when you run the LICENSE program, as
in:
A>LICENSE 82C812
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 15
For a complete list of memory controller types, see the section
titled "LASTBYTE.SYS" later in this manual.
╔═════════════════════════════════════════════════╗
║ WARNING: If you change your hardware configur- ║
║ ation, you will need to run LICENSE again. You ║
║ can use LICENSE to recompute the signature in a ║
║ previously licensed copy of LASTBYTE.SYS, but ║
║ only with the same user name and access key. ║
╚═════════════════════════════════════════════════╝
Once you have installed your name and access key into
LASTBYTE.SYS you will immediately have access to the rest of
upper memory. No other files, diskettes, or manuals need to be
ordered. We do not send out a new diskette or printed manual
when you order an access key; otherwise the price would have to
be greater. You may obtain your access key by mail by filling
out the order form (included in the file ORDERFRM.DOC) and
mailing it with the calculated amount to Key Software Products,
or by contacting one of our distributors. If you order by mail,
be sure to print your name clearly - it will be displayed in the
sign-on screen of LASTBYTE.SYS and is used to determine your
access key.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 16
CHAPTER 5 - DETAILED DESCRIPTIONS
A complete detailed description of the command line syntax and
options of each device driver and utility program in The Last
Byte Memory Manager is provided below. With the exception of
LASTBYTE.SYS which comes first, they are organized in
alphabetical order for ease of reference.
5.1 LASTBYTE.SYS
During initialization, LASTBYTE.SYS scans upper memory looking
for Bios ROMs, display ram, and adapter cards that occupy the
upper memory area. The unoccupied portion of upper memory
defaults to High-DOS memory (for device drivers and TSR's). If
your computer uses one of the supported memory controller chips,
the occupied portion of the upper memory area will default to
Bank-Switch memory that can be made accessible for Ram disks, a
Print Buffer, emulated EMS memory, etc.
These defaults can be modified by the use of command line
options. There are several command line options for
LASTBYTE.SYS. Many of these use a format like:
<keyword>=<base>:<size>
where "<keyword>" is one of the option keywords and may be
abbreviated by its first letter, "<base>" is a four-digit
hexadecimal segment address in the range A000 to FC00, and
"<size>" is a decimal number in kilobytes.
There are two restrictions on these options:
o The base must be exactly 4 hexadecimal digits, must
lie at or above A000, and must be a multiple of
0020 (512 bytes). (For APPEND, the base must
always be A000, or may be omitted.)
o The size must be in the range 1-384 kb.
The "multiple of 0020" requirement for the base is necessary to
be consistent with the way that The Last Byte Memory Manager
organizes high memory during initialization. However, this
requirement is often affected by the coarser resolution of the
memory controllers:
The upper area is partitioned into blocks. Some controllers use
16k blocks, some use 32k blocks, and some use 64k blocks. Each
block must be either totally enabled or disabled. I.e., if any
part of a block's address space is disabled by the presence of
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 17
an adapter card, the entire block of memory is disabled and
cannot be made available as High-DOS Memory.
APPEND=<base>:<size> -or- APPEND=<size>
Allocates a region of upper memory for appending
to the end of conventional memory, thus
increasing it beyond 640k. The memory is NOT
added until it is enabled with HIGHAPND. If
"<base>" is used, it must be A000. (Note:
"<size>" is limited to 16k in the unlicensed
version so that some High-DOS memory will still
be available.)
For example, to force the 64k address range
starting at segment A000 to be appended to the
end of the 640k of Conventional memory, the
proper option syntax would be:
APPEND=64
BANKSWITCH=<base>:<size>
Forces a region of upper memory that would
normally be used as High-DOS memory to be made
available as Bank-Switch memory.
┌─────────────────────────────────────────────────┐
│ This option requires a memory controller chip. │
└─────────────────────────────────────────────────┘
CACHE -or- CACHE=<kbytes>
Forces LASTBYTE.SYS to think that there is a
cache between the CPU and main memory. (This has
nothing to do with disk caching!) This option is
not normally necessary; LASTBYTE.SYS
automatically detects the presence of a cache.
If not specified, the cache size is assumed to be
256k; other sizes may be specified by the second
form.
Activating bank-switch memory causes the contents
of a cache (if present) to be invalid; this is
known as a "cache coherency" problem. If a cache
is detected during installation, LASTBYTE.SYS
checks to see if any portion of the upper address
space is cached. If not, then no cache coherency
problem exists.
If the upper address space is cached, however,
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 18
LASTBYTE.SYS will flush the cache on every access
to Bank-Switch memory in order to prevent the
cache from providing invalid data to the CPU. On
a 486 it does this by executing a special
instruction that resets the cache. On other
processors, the cache is flushed by filling it
from low memory. In the latter case, the size
value discussed above is used to determine how
much to fill.
DOS=<base>:<size>
Forces a region of upper memory that would
normally be used as Bank-Switch memory to be made
available as High-DOS memory.
EXCLUDE=<base>:<size>
Forces a region of upper memory unavailable as
either High-DOS or Bank-Switch memory.
OVERRIDE
Many memory controller chips can move all or part
of shadow ram to the top of (extended) memory.
If LASTBYTE.SYS fails to install with the error
message: "Shadow Ram memory is
relocated/remapped", try adding the Override
option to the LASTBYTE.SYS command line. This
disables any shadow ram relocation that may be in
effect, regardless of your CMOS configuration
menu setup. The CMOS setup menu of your BIOS may
also provide an option to disable relocation
directly, but there are some that determine
whether to relocate or not based on other
configuration options.
HOLE=<base>:<size>
Creates a "hole" of free High-DOS memory within
the address space of a ROM that is shadowed. Use
the HIGHHOLE program to determine where these
holes are located, and the corresponding values
of <base> and <size>.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 19
┌─────────────────────────────────────────────────┐
│ NOTES: (1) The HOLE option is not available in │
│ the unlicensed version of LASTBYTE.SYS. (2) The │
│ <base> and <size> parameters of the HOLE option │
│ are different from other options: <size> is in │
│ bytes and must be a multiple of 16; <base> may │
│ be any hexadecimal value from A000 to FFFF. │
└─────────────────────────────────────────────────┘
MOVEXBDA
This option relocates the Extended Bios Data Area
(XBDA), if it exists, into Upper Memory. The
XBDA is usually 1k reserved at the top of
conventional memory by the main Bios. Not all
machines use an XBDA, but if it exists,
LASTBYTE.SYS will report 639k of Conventional
Memory instead of 640k, and HIGHAPND will refuse
to append any memory. Some machines may not
operate properly with a relocated XBDA, so use
this option with caution. (Note that some
computer viruses also "steal" the top 1k of
memory.)
NOFRAME
May be used in conjunction with the EMS4 or EEMS
options (see below) to use the 64k page frame as
High-DOS Memory. Doing so disables other
(normal) use of all expanded memory.
┌─────────────────────────────────────────────────┐
│ NOTE: The EMS3 and EMS3/4 options imply NOFRAME │
└─────────────────────────────────────────────────┘
RESTRICT=<ab>,<cd>,<ef>
Address lines A15 and A16 are not latched in
hardware design of the AT bus. As a consequence,
some 16-bit adapter cards do not properly decode
these address lines within the narrow time
constraints imposed by the Address Latch Enable
(ALE) signal, and will occassionally respond to a
memory access that is directed at some other
portion of the address space. Thinking that it
is for them, they force the transfer into 16-bit
mode even though the intended recipient requires
8-bit mode, and thus cause erroneous data to be
transferred to the bytes in the odd-numbered
addresses.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 20
The most common (and damaging) occurence occurs
during the 8-bit DMA transfers between a floppy
disk drive and upper memory near the address
space occupied by an offending 16-bit adapter
card.
Due to organization of the address signals on the
AT bus, this phenomena only occurs when the two
address areas are within the same 128k region.
There are three such regions in the upper area:
A0000-BFFFF, C0000-DFFFF, and E0000-FFFFF.
LASTBYTE.SYS automatically senses the presence of
16-bit adapter cards in each of these three
regions and records this information within its
resident image for use by its utilities.
LASTBYTE.SYS skips this test if it detects a PC
with a Micro Channel bus (like the PS/2) since
problem was corrected in its design.
The RESTRICT option is provided to override this
automatic detection of 16-bit adapters. Each of
the three arguments (one per 128k region) should
be replaced by either "0" (indicating no 16-bit
adapters), or "1" (indicating the presense of a
16-bit adapter).
For example, the option RESTRICT=1,1,0 would
imply that one or more 16-bit adapters are
located in the first two 128k regions of upper
memory (A000-DFFF), so that when the /RESTRICT
option of HIGHDRVR, HIGHTSR, HIGHINST, HIGHUMM,
HIGHEMS3, and HIGHEMS4 is used, only High-DOS
memory in the region E000-FFFF will be
allocated. This is the default for HIGHBFRS, but
may be disabled by use of its /NORESTRICT
option.
SHADOW=<base>:<size>
Forces a region of memory (presumably ROM) to be
copied into shadow ram. If other hardware
outside the specified region, but within the same
memory controller block conflicts with this
request, a corresponding error message will be
displayed and LASTBYTE.SYS will not be
installed.
┌─────────────────────────────────────────────────┐
│ This option requires a memory controller chip. │
└─────────────────────────────────────────────────┘
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 21
36C300, 62C202, 62C241, 62C251, 82C202,
82C212, 82C222, 82C230, 82C235, 82C241,
82C281, 82C282, 82C302, 82C302c,82C307,
82C311, 82C322, 82C351, 82C361, 82C382,
82C391, 82C461, 82C481, 82C482, 82C491,
82C812, 82C836, 82C841, 82411, 82S411,
EMS3, EMS3/4, EMS4, EEMS, FIXED
Each of these command line options forces
LASTBYTE.SYS to assume a particular memory
controller device. Normally, LASTBYTE.SYS will
automatically detect what's installed; these
options are for those rare occasions when the
automatic detection fails. (Note: EMS3 and
EMS3/4 automatically enable the NOFRAME option
described above.)
? (A question mark)
Causes LASTBYTE.SYS to erase the screen, display
a summary of what it finds in the upper memory
area, and pause for two seconds to give the user
an opportunity to read the information. To
freeze this display for a longer period, press
<Ctrl>-S; then to continue with CONFIG.SYS
processing, press any key.
5.2 HIGHAPND.EXE and HIGHAPND.SYS
HIGHAPND.EXE is a program that can only be used in conjunction
with the "APPEND=" option of LASTBYTE.SYS. HIGHAPND.SYS is a
device driver version of HIGHAPND.EXE. Either can be used to
append some of the upper memory that begins at 640k onto the end
of conventional memory (and also to return later to 640k).
Monochrome (MDA), Hercules, and CGA display adapters don't use
the 64k region starting at A000, and so this memory can be used
to extend conventional memory from 640k to 704k, provided there
is available read/write memory in this area. CGA display
adapters also don't use the next 32k either, and so CGA users
may be able to extend conventional memory all the way to 736k.
EGA and VGA display adapters have a 64k hi-resolution graphics
display buffer that is located at A000. This buffer is only
needed when you are using only hi-resolution graphics. When the
display is in either text or low-resolution CGA graphics modes,
this memory is not used, and may be replaced (switched) with
shadow ram memory if available, or the display buffer itseld may
be used to extend conventional memory. Since most EGA and VGA
adapters usually don't use the 32k region at B000, you may even
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 22
be able to extend conventional memory up to 736k.
You may either use HIGHAPND.SYS during CONFIG.SYS processing, as
in:
DEVICE=HIGHAPND.SYS ON {Extends conv. memory beyond 640k}
. . .
DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHAPND.SYS may not work properly ║
║ with some versions of MS-DOS; in such cases, ║
║ use HIGHAPND.EXE instead. There is no benefit ║
║ to using HIGHDRVR.SYS to load HIGHAPND.SYS ║
║ because it never stays resident. ║
╚═════════════════════════════════════════════════╝
or use HIGHAPND.EXE during AUTOEXEC.BAT processing (or at any
time after the computer is booted), as in:
A>HIGHAPND ON {Extends conv. memory beyond 640k}
. . .
A>HIGHAPND OFF {Resets conv. memory to 640k}
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHAPND.EXE may not work properly ║
║ with DR DOS. In such cases, use HIGHAPND.SYS. ║
╚═════════════════════════════════════════════════╝
Don't forget - both HIGHAPND.SYS and HIGHAPND.EXE require the
use of an APPEND option on the LASTBYTE command line.
HIGHAPND can be used without any command line options to
determine the current size of conventional memory and the state
of EGA/VGA hi-resolution graphics:
A>HIGHAPND
You can put these commands into a batch file to simplify
switching back and forth. For example, if you want the extra
memory all the time except when you need hi-res graphics for
Microsoft Windows, create a batch file like the following:
@ECHO OFF
HIGHAPND OFF
WIN %1 %2
HIGHAPND ON
HIGHAPND will automatically disable any EGA or VGA hi-resolution
graphics capability whenever conventional memory has been
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 23
extended beyond 640k. This makes software that attempts to
sense what type of display adapter is installed think that you
have only a CGA adapter. Later, when you need the graphics
capability, you can disable the memory extension and
hi-resolution graphics will be automatically re-enabled.
If you have hi-res graphics disabled and run a program that
tries to use hi-res graphics without first sensing for an EGA or
VGA adapter, LASTBYTE.SYS will notice the conflict, issue an
error message, and terminate the program. Some programs
redirect a few interrupts during their initialization and then
restore them before termination. LASTBYTE.SYS's termination of
graphics programs doesn't know how to restore these interrupts,
so in some cases you may have to reboot the computer. In other
words, if you experience this kind of program termination with
an application program, it's best to reboot and prepare a batch
file (as shown above) to run the program.
HIGHAPND provides more detailed control over this protection
through the /HIRESGFX option as described below. This may be
helpful, for example, with software that uses the 43 (50) line
text mode of the EGA (VGA) adapter. (The setting of this option
is only meaningful when HIGHAPND ON is in effect.)
/HIRESGFX=TRAPPED
Disables all EGA/VGA high-resolution graphics
functions provided by video BIOS interrupt 10h
and makes programs think a CGA adapter is
installed. (This is the default.)
/HIRESGFX=SENSED
Disables all EGA/VGA high-resolution graphics
functions provided by video BIOS interrupt 10h,
but does let programs sense the presence of an
EGA or VGA adapter.
/HIRESGFX=ALLOWED
Allows all video BIOS interrupt 10h function
calls, even if they might use the 64k EGA/VGA
graphics display buffer at A000-AFFF.
Technical Note
HIGHAPND requires either a memory controller chip or
an EGA or VGA display adapter. If the memory
controller chip can enable shadow ram memory at A000,
then shadow ram memory will be used to extend
conventional memory; otherwise, HIGHAPND will convert
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 24
the graphics display buffer of the EGA or VGA display
adapter into an extension of conventional memory.
5.3 HIGHBFRS.EXE (MS-DOS 3 only)
╔═════════════════════════════════════════════════╗
║ WARNING: Placing MS-DOS buffers in high memory ║
║ can result in the loss of data. I.e., it can ║
║ damage the directory and file allocation tables ║
║ of your disk. Read everything in this section ║
║ before considering the use of this utility. ║
╚═════════════════════════════════════════════════╝
HIGHBFRS can be used to place MS-DOS 3.x buffers in upper
memory, but you must be careful that this does not cause DMA
transfers into a 128k region of memory containing a 16-bit
adapter, or else you may damage the data on your disk. (See the
discussion of the "RESTRICT" option of LASTBYTE.SYS.) HIGHBFRS
offers two solutions to this problem: The first (and default)
solution is to restrict buffer placement to particular 128k
regions where there is no conflict.
If all three 128k regions contain 16-bit adapters, then a second
(different) solution may be both necessary and sufficient. It
intercepts transfers between floppy disk drives and upper
memory, and redirects the transfer through an intermediate
sector buffer in conventional (low) memory. The corresponding
command line option would be:
HIGHBFRS /FLOPPY
Almost all hard disk controllers use 16-bit CPU instructions
(rather than DMA) to transfer data and thus do not incur this
problem.
HIGHBFRS defaults to the maximum number of buffers and
automatically determines the safest location for loading them
into upper memory by checking with LASTBYTE.SYS for the location
of 16-bit adapter cards, if any. If none of the three 128k
segments is considered "safe", it will enable interception of
floppy transfers. Any of these defaults can be overridden by
one or more of the following command line options:
BUFFERS=<number>
Changes the number of MS-DOS buffers to the value
specified; "<number>" is a number from 1-99, or
may be replaced by the word "MAXIMUM".
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 25
/NORESTRICT (Abbreviated "/N")
Disables the default restriction on buffer
placement caused by the presence of 16-bit
adapter cards or by use of the "RESTRICT" option
on the LASTBYTE.SYS command line.
/FLOPPY (Abbreviated "/F")
Enables redirection of Bios INT 13h calls that
attempt to transfer data between a floppy disk
drive and upper memory. If redirected, such
transfers go through an intermediate buffer
located in conventional memory. (Disables
restrictions on buffer placement.)
When HIGHBFRS is invoked with no command line arguments, it
simply reports the number of MS-DOS buffers presently located in
upper memory and whether or not transfers between floppy disk
drives and upper memory are redirected. You may use the HIGHMEM
program to determine where the buffers have been placed in upper
memory.
Microsoft recommends setting the "BUFFERS=" option in CONFIG.SYS
according to the type of application most frequently used.
Implicit within this recommendation is the assumption that you
won't change the value very often since it requires editing
CONFIG.SYS and rebooting.
In general, more buffers help when running programs that perform
random access on a relatively small number of disk records (such
as the index for a database program), or if your disk has many
subdirectories organized on several levels.
Since HIGHBFRS allows you to increase or decrease the number of
buffers dynamically, you could create some batch files to tune
the number of buffers to fit the application you're running at
the moment.
5.4 HIGHDISK.SYS
HIGHDISK.SYS is a device driver that implements a ram disk in
upper memory. Bank-Switch Memory is allocated first, and if
that isn't enough, then High-DOS Memory is allocated to satisfy
the total request. The device driver automatically loads itself
into upper memory without using HIGHDRVR or the DOS 5 DEVICEHIGH
command, as in:
DEVICE=HIGHDISK.SYS
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 26
This creates a ram disk that uses all available upper memory,
with 32 directory entries and sectors of 128 bytes each.
A command line option may be used to specify the size of the RAM
disk as in:
DEVICE=HIGHDISK.SYS 100
This creates a 100k byte ram disk.
Other command line options may be used to change the number of
bytes per sector and directory entries, as in:
DEVICE=HIGHDISK.SYS 100 256 64
This creates a 100k RAM disk with 256 bytes per sector and 64
root directory entries.
╔═════════════════════════════════════════════════╗
║ NOTE: If you have used the command DOS=UMB or ║
║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0 ║
║ manage the Upper Memory Blocks, you must limit ║
║ how much upper memory HIGHUMM can use so that ║
║ some will be available for HIGHDISK. ║
╚═════════════════════════════════════════════════╝
5.5 HIGHDRVR.SYS
HIGHDRVR is a device driver that is used to load other device
drivers into upper memory. For a brief introduction to its use,
see the section titled "Testing LASTBYTE.SYS HIGHDRVR.SYS and
HIGHTSR.EXE" in the "GETTING STARTED" chapter at the beginning
of this manual. Also see the sections in the "HINTS /
SUGGESTIONS / EXPLANATIONS" chapter near the end of this
document on the /SIZE, /LOW, and /RESTRICT options.
The command line syntax of the CONFIG.SYS line for HIGHDRVR is:
DEVICE=[path]HIGHDRVR.SYS <filespec>
where '<filespec>' is the filename of the device driver to be
loaded high, optionally prefixed by a drive and directory
specifcation. The filespec may be preceded by one or more of
the /SIZE, /LOW, and /RESTRICT options, and followed by options
at the end of the command line as required by the particular
driver to be loaded.
When HIGHDRVR searches the disk for the device driver to load,
it follows the following search strategy:
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 27
(1) If '<filespec>' includes a drive or directory
specification, this will be the only place that
HIGHDRVR will look.
Otherwise, HIGHDRVR will search for the driver in:
(2) The current (root) directory, and then
(3) The same directory where HIGHDRVR was found.
5.6 HIGHEMS3.SYS and HIGHEMS4.SYS
Two expanded memory emulators are provided with The Last Byte
Memory Manager. Both use upper memory as expanded memory.
HIGHEMS3.SYS is compliant with the older LIM 3.2 spec, and
HIGHEMS4.SYS with the newer LIM 4.0 spec. Both are included
since the HIGHEMS3.SYS requires much less memory for the device
driver itself than HIGHEMS4.SYS. In many applications, you may
find that 3.2 is all you need.
These device drivers emulate expanded memory! That means that
they use software to copy data back and forth between the
logical EMS memory (pages) and the page frame. Obviously, this
is much slower than the performance you would realize with
hardware support, or even with EMM386.SYS. Therefore, these
device drivers are provided as a last resort for those who have
no other way of providing EMS memory to their applications, such
as users with only 1 meg of memory.
Both HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
parameter which is the number of 16k EMS pages to allocate. If
omitted, the maximum allocation will be used. Bank-Switch
memory is allocated first, and if that isn't enough, then
High-DOS Memory is allocated to satisfy the total page request.
Use only one of these device drivers, and load it after
LASTBYTE.SYS. The driver automatically loads itself into upper
memory without the need for either HIGHDRVR or the DOS 5
DEVICEHIGH command. Also see the section on the /RESTRICT
option in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
the end of this document.
╔═════════════════════════════════════════════════╗
║ NOTE: If you have used the command DOS=UMB or ║
║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0 ║
║ manage the Upper Memory Blocks, you must limit ║
║ how much upper memory HIGHUMM can use so that ║
║ some will be available for HIGHEMS3/HIGHEMS4. ║
╚═════════════════════════════════════════════════╝
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 28
5.7 HIGHENV.EXE
HIGHENV is a utility that moves the master environment of the
command processor (typically COMMAND.COM) out of conventional
memory and into High-DOS memory. It can also be used to change
the size of the environment at any time.
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHENV is incompatible with Novell. ║
╚═════════════════════════════════════════════════╝
If used without a command line option, HIGHENV simply reports
the location, capacity, and length of the master environment.
If the environment has not been moved from low memory, it also
examines and reports potential references to the environment
that exist within the command processor. If one or more are
located, the first line(s) of output from HIGHENV will be:
"Potential command processor patch at location XXXX."
where "XXXX" will vary from one command processor to another.
HIGHENV should be used this way at least once to determine what
"/PATCH" options (described below) may be required.
To move the master environment into upper memory, you must use
one or more /PATCH options and may use a /SIZE option. The
patch options specify locations in the command processor that
must be modified. (If there are no locations in the command
processor that need to be modified, use /PATCH=NONE.) The
/PATCH option may only be specified once, when the environment
is moved from low to upper memory. The patch locations are
recorded in upper memory and are automatically adjusted if the
environment is repositioned within upper memory as the result of
a subsequent use of HIGHENV to resize the environment.
The size option is simply a number that specifies the extra
space in bytes to be allocated to accomodate additional
environment strings besides those already established. If the
size option is omitted, the size of the environment block (and
thus its capacity for growth) will not be changed.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 29
╔═════════════════════════════════════════════════╗
║ WARNING: The SET command of COMMAND.COM norm- ║
║ ally warns you if you run out of space in the ║
║ master environment. However, if you have used ║
║ HIGHENV to move it into upper memory, this ║
║ safegaurd no longer exists - you'll just write ║
║ over the next thing in upper memory! Be sure ║
║ to check the HIGHENV report to be sure that you ║
║ have enough extra space in the environment so ║
║ that this won't occur. ║
╚═════════════════════════════════════════════════╝
A maximum of four command processor locations to be patched may
be specified in either of two ways:
A>HIGHENV 256 /PATCH=1057 /PATCH=1536
-or-
A>HIGHENV 256 /PATCH=1057,1536
Each of the patch numbers specify a location in the memory image
of the command processor; these locations contain the segment
address of the master environment, and must be modified to point
to the new master environment in upper memory. Possible values
to be used are restricted to those locations reported when
HIGHENV is run with no command line options and before the
environment has been moved into upper memory.
COMMAND.COM usually contains only one such location that needs
to be patched; 4DOS contains none (use /PATCH=NONE). (Note:
HIGHENV always patches the environment address stored in the
program segment prefix of the command processor - this patch
does not need to be specified.)
╔═════════════════════════════════════════════════╗
║ NOTE: The /U option of 4DOS is an alternative ║
║ method for placing the master environment in ║
║ upper memory. You don't need to use HIGHENV if ║
║ you are already using the /U option of 4DOS. ║
╚═════════════════════════════════════════════════╝
Once moved into upper memory, the size of the environment may be
changed by using HIGHENV with simply a size option. For
example, to shrink the environment to only enough room for the
current environment strings, use:
A>HIGHENV 0
Or to change the growth capacity to allow for the current
environment strings plus 100 bytes more, use:
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 30
A>HIGHENV 100
5.8 HIGHHOLE.EXE
HIGHHOLE is a utility program that finds unused space ("holes")
in ROMs. A "hole" is defined as a sequence of at least 256
bytes, all having the same value, and usually corresponds to
unused, left-over space in the ROM. If the ROM is shadowed,
this space can usually be converted into free High-DOS memory
using the "HOLE=" option of LASTBYTE.SYS.
┌─────────────────────────────────────────────────┐
│ NOTE: The HOLE option is not available in the │
│ unlicensed version of LASTBYTE.SYS. │
└─────────────────────────────────────────────────┘
These holes are often less than 1k in size, but sometimes as
large as 6k. Since The Last Byte Memory Manager uses a "best
fit" strategy when allocating Hi-DOS memory, even the smaller
holes can become useful to hold the master environment created
by HIGHENV, the markers of HIGHMARK, or with utilities like
HIGHDISK and HIGHSPLR that can distribute their memory among
several small pieces. In addition, The Last Byte Memory Manager
will use the smallest holes for memory control blocks (MCB's)
that must be allocated for Bank-Switch memory needs.
HIGHHOLE merely locates probable holes, and suggests the
corresponding option to be used with LASTBYTE.SYS. To activate
these holes, you must then modify your configuration to include
these options. No option will be suggested for a hole if (1)
the corresponding ROM area is not shadowed, (2) the hole is in
the Bios Data Area (FE05-FFFF), or (3) the corresponding shadow
ram is not controlled by The Last Byte Memory Manager.
NOTE: Use of LASTBYTE.SYS's HOLE option will cause warm boots to
be converted into cold boots.
5.9 HIGHINST.EXE
HIGHINST is simply a TSR version of HIGHTSR that is designed for
use with the MS-DOS "INSTALL=" directive of a CONFIG.SYS file.
MS-DOS requires that the program named in an INSTALL directive
to be the name of a TSR, and anything else (e.g., HIGHTSR, which
is not a TSR) will produce an error message. A small part of
HIGHINST (96 bytes) will remain resident in conventional
memory.
For a full description of command line options and syntax, see
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 31
the description for HIGHTSR. Also see the sections on the
/SIZE, /LOW, and /RESTRICT options in the "HINTS / SUGGESTIONS /
EXPLANATIONS" chapter near the end of this document.
5.10 HIGHKEY.EXE
HIGHKEY is a advanced command line editor that can recall and
edit previous commands. HIGHKEY is similar to the DOSKEY
program in DOS 5, but with filename completion and the unique
ability to store the command line history in bank-switch
memory. It does not support DOSKEY macros, or the editing keys
F7, F9, Alt+F7, or Alt+F10.
To install HIGHKEY, simply enter it as a command at the prompt:
A>HIGHKEY
This will allocate a recall buffer with a default size of 1024
bytes, but which can be changed at any time with the use of a
command line option.
5.10.1 Options
All of the keywords that follow may be abbreviated.
/BUFSIZE=n Empties the recall buffer, and resizes it to 'n'
bytes. If 'n' is replaced by the word "MAXIMUM",
the recall buffer size will use all available memory
up to 65535 bytes.
/INSERT Sets the default typing mode to insert.
/OVERSTRIKE Sets the default typing mode to overstike.
/HISTORY Displays the contents of the command line
recall buffer on the screen.
filespec A filename, optionally preceeded by a drive and
directory specification. If used with the /HISTORY
option, causes the recall buffer to be written to
the specified file. If used without the /HISTORY
option, it loads the recall buffer from the file.
5.10.2 Editing Commands
Some of the HIGHKEY editing commands use what is known as the
"template". The template is initialized to a copy of the
previous command line, but may be modified by one or more of the
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 32
editing commands.
Left Arrow Moves the cursor back one character.
Right Arrow Moves the cursor forward one character.
Up Arrow Recalls the previous command and stores
it in the template.
Down Arrow Recalls the next command and stores it
in the template.
PgUp Recalls the oldest command and stores it
in the template.
PgDn Recalls the most recent command and stores
it in the template.
Ctrl+Left Arrow Moves the cursor back one word.
Ctrl+Right Arrow Moves the cursor forward one word.
Home Moves the cursor to the beginning of
the command line.
End Moves the cursor to the end of the
command line.
Esc Erases the command line; does not affect
the template.
Ins Toggles insert versus overwrite mode.
Backspace Deletes the character to the left of the
cursor; does not affect the template.
Del Deletes the character at the cursor; does
not affect the template.
Ctrl+End Deletes from the cursor to the end of
the line; does not affect the template.
Ctrl+Home Deletes from the beginning of the line
up to but not including the cursor; does
not affect the template.
F1 Copies one character from the template.
F2 Waits for a keypress, then inserts charac-
ters from the template up to but not in-
cluding the first occurrence of that key.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 33
F3 Copies the remainder of the template to
the command line.
F4 Waits for a keypress, then deletes charac-
ters from the template up to but not in-
cluding that key. The template is then
displayed on the command line.
F5 Copies the command line to the template
and then erases the command line.
F6 Inserts an end-of-file character (Ctrl+Z).
F8 Searches for the next command that matches
the characters in the command line up to
the position of the cursor, then copies
that command to the template.
Tab Searches for a file on the disk whose name
matches the partial filespec given by the
text indicated by the cursor. If found,
the filespec is completed on the command
line.
5.11 HIGHMARK.EXE
Sometimes it can be useful to remove one or more TSR's from
memory, either because you no longer want to use the features
that they provide or perhaps in order to make room for another
set of TSR's.
In order to be able to remove a group of TSR's from upper
memory, they must be be marked. To mark them, run HIGHMARK once
before you use HIGHTSR to load the TSR's. Then later, simply
run HIGHUNDO - the mark and all of its associated TSR's will be
removed.
HIGHMARK may be executed more than once to establish multiple
levels of TSR's to be removed. Each execution of HIGHMARK
places another mark in memory with a unique mark number. Every
TSR loaded by HIGHTSR is automatically associated with the most
recent execution of HIGHMARK. You can use HIGHMEM to see the
marks, their mark number, and the set of TSR's associated with
the mark. Every execution of HIGHUNDO will then remove the set
of TSR's associated with the most recent HIGHMARK.
You may specify a mark level on the command line of HIGHUNDO.
This will cause it to remove all the TSR's and marks whose mark
number is greater than or equal to the number on the command
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 34
line.
IMPORTANT: When a mark is removed using HIGHUNDO, two basic
things happen: (1) the interrupt vector table is restored to its
state prior to the corresponding HIGHMARK, and (2) any memory
control blocks marked with the same mark number are released.
If you have installed one or more TSR's since the mark was
established, but did so without the use of HIGHTSR, these TSR's
will be disabled but they will not be removed from memory. The
following three examples indicate this consequence:
Disabled and Diabled but Disabled but
removed remains remains
-------- ------------ ------------
A>HIGHMARK A>HIGHMARK A>HIGHMARK
A>HIGHTSR CLOCK A>CLOCK A>LOADHIGH CLOCK
A>HIGHUNDO A>HIGHUNDO A>HIGHUNDO
5.12 HIGHMEM.EXE
HIGHMEM is a program that provides a display of what is loaded
into the upper memory area. For a detailed description on using
the HIGHMEM program, see the section titled "Mapping Upper
Memory with HIGHMEM" in the "GETTING STARTED" chapter at the
beginning of this manual.
5.13 HIGHSPLR.EXE
HIGHSPLR is a interrupt-driven print spooler that creates a
print buffer in upper memory. Once installed, programs that
send output to the printer are no longer held up waiting for the
printer, but rather simply send their output to the buffer.
Characters in the buffer are then sent to the printer by the
resident portion of HIGHSPLR while your computer is free to do
other work.
Unlike the MS-DOS printer spooler (PRINT.COM), HIGHSPLR is
driven by the printer hardware interrupt line that signals
printer "ready", rather than the timer tick (that only
interrupts 18 times per second). Unlike PRINT.COM, this allows
full-speed transfers (e.g., up to about 8,000 cps) to the
printer even while executing other programs.
HIGHSPLR tries to place its buffer in Bank-Switch memory, but
will use High-DOS memory if a sufficient amount of Bank-Switch
memory is not available. The size of the buffer will default to
all available Bank-Switch and High-DOS memory, but may be
restricted (or resized later) by a command line option.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 35
HIGHSPLR supports both parallel and serial printers, but
defaults to LPT1. Multiple copies of HIGHSPLR can be installed
to support more than one printer. HIGHSPLR determines the
physical i/o port address and interrupt vector automatically
from the device name (e.g., LPT2), but these defaults can be
altered with command line options.
HIGHSPLR also has a unique "monitor" option. While output is
being sent to the printer, you can monitor the actual transfer
rate by entering the command,
A>HIGHSPLR MONITOR
The monitor operation may be terminated at any time by pressing
a key, or will automatically terminate when the print buffer has
been emptied. Once terminated, HIGHSPLR will display the
maximum and average transfer rates measured during the monitor
operation.
The command line syntax for HIGHSPLR is given below. All
parameters are optional and may be specified in any order. All
of the options except LPTn, COMn, and IRQn may be abbreviated by
their first letter.
HIGHSPLR [opt] [opt] ... [opt]
where opt may be selected from:
KBYTES=n LPTn or COMn PORT=n
IRQn MONITOR RESET
or FLOW=<type>, where <type> may be selected from:
XON DTR RTS NONE (default)
Normally, neither the "PORT" or "IRQn" options are necessary
since they are automatically derived from the "COMn" or "LPTn"
option. The "RESET" option provides a way to cancel printing
from the buffer at any time. One of the FLOW control options
(XON, DTR, RTS) may be required with some serial (COMn) printers
to provide flow control.
5.14 HIGHTSR.EXE
HIGHTSR is a program that is used to load TSR programs into
upper memory. For a brief introduction to its use, see the
section titled "Testing LASTBYTE.SYS HIGHDRVR.SYS and
HIGHTSR.EXE" in the "GETTING STARTED" chapter at the beginning
of this manual. In addition to the /NOENV option described
below, also see the sections on the /SIZE, /LOW, and /RESTRICT
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 36
options in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
the end of this document.
The command line syntax for HIGHTSR is:
[path]HIGHTSR <filespec>
where '<filespec>' is the filename of the TSR program to be
loaded high, optionally prefixed by a drive and directory
specifcation. The filespec may be preceded by one or more of
the /SIZE, /LOW, /NOENV, and /RESTRICT options, and followed by
options at the end of the command line as required by the
particular TSR to be loaded.
When HIGHTSR searches the disk for the device driver to load, it
follows the same strategy that MS-DOS uses when loading
programs:
(1) If '<filespec>' includes a drive or directory
specification, this will be the only place that
HIGHTSR will look.
Otherwise, HIGHTSR will search for the TSR program in:
(2) The current directory, and then
(3) Those directories given by the PATH environment
variable.
5.14.1 The /NOENV Option
All programs, including TSR's, are allocated two regions of
memory when they are loaded: One is the area for the program
itself, and the other is for a copy of the environment. Most
TSR's don't make use of their environment, and some actually
release it to the operating system rather than hanging onto it.
If HIGHMEM finds an environment block, the corresponding entry
in the "Description" column will have the name of the TSR that
it belongs to (such as "CLOCK.EXE") followed by the indication
"[Env]". Occassionally, you may see a similar indication
"[Dat]"; this is a data block explicitly allocated by the TSR
for some unknown purpose.
TSRs that eliminate their PSP
The authors of some TSR's attempt to save a little
extra memory by having the TSR eliminate its own
Program Segment Prefix (PSP) during initialization.
Doing so makes it impossible to identify the TSR's
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 37
environment block. However, this byte-saving
mentality will usually mean that the TSR's
initialization code also eliminates its environment
block, so this is rarely a problem.
If you see a block labelled "[Env]" in the output of HIGHMEM,
then you can use the /NOENV command line option of HIGHTSR to
release this block, even if the TSR didn't:
HIGHTSR /NOENV CLOCK
As noted earlier, some TSRs will release their environment
anyway and so you may be tempted to load them without using the
/NOENV option. This usually will create a "hole" in upper
memory since the TSR's environment is almost always allocated
just below the TSR itself. Use of the /NOENV option forces the
environment to be allocated down in conventional memory (where
it will be reclaimed later) so that the "hole" is eliminated.
5.15 HIGHUMM.SYS
HIGHUMM is a device driver that creates, and lets application
software use, Upper Memory Blocks (UMB's) in the upper memory
area via a standard protocol that is part of what is known as
the Extended Memory Specification (XMS). The number, size, and
location of UMB blocks vary widely depending upon the types of
hardware adapter cards resident within the upper address space.
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHUMM is NOT compatible with the ║
║ simultaneous use of EMM386.SYS. Everything ║
║ will work fine until you try to reboot, and ║
║ then the system will "hang". The DOS 5 version ║
║ of EMM386.SYS is capable of providing UMB ║
║ support, and thus HIGHUMM.SYS is not needed. ║
╚═════════════════════════════════════════════════╝
HIGHUMM may be installed in one of two ways:
o If an XMS driver (such as HIMEM.SYS) has already
been loaded, HIGHUMM will link into it, providing
an implementation of the two XMS functions for
accessing what the XMS specification refers to as
"Upper Memory Blocks" (UMB's). Although described
in the XMS specification, the UMB functions have
not been implemented in any version of HIMEM.SYS.
For example,
DEVICE=LASTBYTE.SYS {and any options}
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 38
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
DEVICE=HIGHUMM.SYS
o If an XMS driver has not been loaded, then HIGHUMM
will become a UMB-Only XMS device driver, providing
support for XMS functions 00h (Get Version Number),
10h (Allocate UMB Block), 11h (Deallocate UMB
Block). All other XMS functions will return
failure, indicating that the function is not
implemented. For example,
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHUMM.SYS
Important!
If another XMS device driver is used (e.g., to
provide management of extended memory or the
upper memory area), it must be loaded before
HIGHUMM.SYS.
If you want to limit how much upper memory can be allocated by
HIGHUMM as UMB's, you can specify this in kbytes as an option on
the HIGHUMM.SYS command line, as in:
DEVICE=HIGHUMM.SYS 60
This provides a guarantee that some amount of upper memory will
never be allocated by HIGHUMM.SYS, and will thus still be
available for other uses.
HIGHUMM requires that LASTBYTE.SYS be installed first. It
automatically loads itself into upper memory without using
either HIGHDRVR or the DOS 5 DEVICEHIGH command. Also see the
section on the /RESTRICT option in the "HINTS / SUGGESTIONS /
EXPLANATIONS" chapter near the end of this document.
5.16 HIGHUNDO.EXE
For a complete discussion of HIGHUNDO see the description of its
companion program, HIGHMARK in an earlier section.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 39
CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS
The following article provides an excellent definition of the
various kinds of memory, such as conventional, extended,
expanded, high, and upper. More important, however, is its
discussion of how various adapter cards make use of the upper
address space, and may provide some insight if you're having
problems getting The Last Byte Memory Manager to install
properly:
Barry Simon, "How to Get the Most from Your System's
High DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
1990), pp. 347-358.
6.1 The /SIZE Option
This option can be used with HIGHDRVR, HIGHINST, and HIGHTSR.
The amount of High-DOS memory required to load a device driver
or TSR (hereafter called the "load requirement") is the larger
of two amounts: (1) the amount required during initialization
(greater than or equal to the size of the file) and (2) the
amount required when finally resident.
Although the final resident requirement of any high-loaded
software may be obtained from the HIGHMEM output, remember that
the initialization (and thus the load) requirement may be
greater than either the file size or the HIGHMEM listing!
Most device drivers and TSR's require more memory for
initialization than when resident, although there are a few
(such as SMARTDRV.SYS and NANSI.SYS) which require extra
resident memory for buffers, etc. Thus the normal operation of
HIGHDRVR, HIGHTSR, and HIGHINST is to use the largest free
High-DOS memory block to load the software since the resident
memory requirement cannot be determined until after the software
has been loaded and initialized.
Unfortunately, this can lead to a less than optimum use of
memory. If the memory requirements were known, then a memory
block could be selected using a "best fit" strategy; i.e., the
smallest free High-DOS memory block which is larger than or
equal to the load requirement. This usually results in much
better utilization of memory.
HIGHDRVR, HIGHTSR, and HIGHINST have a special option /SIZE that
can be used to report the load requirement:
DEVICE=HIGHDRVR.SYS /SIZE SMARTDRV.SYS 2048 512
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 40
or: INSTALL=HIGHINST.EXE /SIZE SHARE.EXE
or: HIGHTSR /SIZE PRINT.COM /D:PRN
The load requirement will then be displayed on the console after
the software has been loaded and initialized. This information
can then be used to specify the value (expressed in bytes) to be
used with the /SIZE option to force a "best fit" allocation.
For example:
DEVICE=HIGHDRVR.SYS /SIZE:16240 SMARTDRV.SYS 2048 512
or: INSTALL=HIGHINST.EXE /SIZE:13616 SHARE.EXE
or: HIGHTSR /SIZE:17120 PRINT.COM /D:PRN
6.2 The /LOW Option
This option can be used with HIGHDRVR, HIGHINST, and HIGHTSR.
As noted earlier, TSR's and device drivers often require much
more memory during installation as compared to that required
once they are resident. This can prevent loading them into
High-DOS memory even if there's enough for the resident image
(but not enough for initialization).
HIGHTSR, HIGHINST, and HIGHDRVR provide an option "/LOW" that
can be used with some TSR's and device drivers to get around
this problem:
HIGHTSR /LOW APPEND
-or-
DEVICE=HIGHDRVR.SYS /LOW MYDRIVER.SYS
For example, the first example above loads a TSR (APPEND.EXE)
and initializes it in low (conventional) memory where there's
lots of room, then copies the (smaller) resident image up into
upper memory.
╔═════════════════════════════════════════════════╗
║ WARNING: The design of some software may pre- ║
║ vent the /LOW option from working properly. ║
║ Don't use it unless necessary, and then only ║
║ after you have tested it to be sure everything ║
║ works as expected. (For example, it will NOT ║
║ work with PRINT.COM, SHARE.EXE, FASTOPEN.EXE, ║
║ MODE.COM, or HyperDisk.) ║
╚═════════════════════════════════════════════════╝
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 41
6.3 The /RESTRICT Option
This option can be used with HIGHDRVR, HIGHINST, HIGHTSR,
HIGHUMM, HIGHEMS3, and HIGHEMS4. When used, it restricts which
128k regions of upper memory may be allocated for use with these
utilities. For a detailed discussion of why these regions may
need to be restricted and how to control the restrictions, see
the discussion of the RESTRICT option in the detailed
description of LASTBYTE.SYS.
6.4 Specifying Command Line Options with Indirect Files
Some of the device drivers and utility programs in The Last Byte
Memory Manager package may require lots of options to be
specified. To avoid lengthly command lines, these options can
be placed in a text file if the name of that file is specified
on the command line preceded by the '@' character. For example,
you'd probably run out of room if all of the following options
were required on the LASTBYTE.SYS command line:
APPEND=64 DOS=B000:32 DOS=F000:32 ? 82C302
As an alternative, create a corresponding text file called
LASTBYTE.CFG (for example), and put the options into it:
A000:64
DOS=B000:32 DOS=F000:32
? 82C302
(Carriage returns in the indirect file are treated as blanks)
Then the CONFIG.SYS command line becomes simply:
DEVICE=LASTBYTE.SYS @LASTBYTE.CFG
In effect, options taken from the indirect file are inserted
into the command line, so that one or more indirect file
references may be placed among other options on the command
line:
DEVICE=LASTBYTE.SYS ? @TLB.1 A=A000:32 @C:\TLB\TLB.2
Indirect files may be used on the command line of any device
driver (.SYS files) or utility program (.EXE files) in The Last
Byte Memory Manager package.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 42
6.5 Using the DOS=F000:32 Option
The 64k region starting at paragraph address F000 is the Bios
ROM. Many computers use a Bios ROM developed by AMI or
Phoenix. The more recent versions of these ROMs devote the
first 32k to initialization code that is only used during the
boot sequence, and use the second 32k for that portion that must
remain available at all times. (This seems to be true of the
Award Bios as well, but has not been verified.)
By the time your computer gets to the point in its boot sequence
where it is installing the device drivers (e.g., when it is
installing LASTBYTE.SYS), the Bios initialization code is no
longer needed. If you have one of these AMI or Phoenix Bios
chips, you can capture another 32k of upper memory by using a
DOS=F000:32 option on the LASTBYTE.SYS command line.
Of course, whenever you press Ctrl-Alt-Del to do a warm boot,
the ROM Bios initialization code needs to be executed again!
And that could be a problem since you've effectively disabled it
with the DOS=F000:32 option! Fortunately, LASTBYTE.SYS
intercepts all keyboard input and keeps an eye out for
Ctrl-Alt-Del. When it sees the warm boot request, it will force
a cold boot if you've used the DOS=F000:32 option. This
re-enables the entire 64k Bios ROM so that the initialization
code is reactivated before the processor tries to execute it.
Otherwise a normal warm boot is used.
╔═════════════════════════════════════════════════╗
║ WARNING: Some TSRs intercept keyboard interrupt ║
║ 9, and jump directly into a fixed location in ║
║ the Bios ROM where the Warm Boot code begins. ║
║ Unfortunately, this will bypass LASTBYTE.SYS's ║
║ attempt to turn the ROM back on. ║
╚═════════════════════════════════════════════════╝
6.6 Video Display RAM above 640k
In general, the region A0000-BFFFF is the video display buffer
area. Various display adapters (MDA, Hercules, CGA, EGA, and
VGA) typically use only a small subset of this space. The Last
Byte Memory Manager automatically senses what kind of video
display adapter is installed and reserves the space it uses.
The MDA (monochrome) adapter implements a 4k text buffer at
B0000-B0FFF, and the CGA (color) adapter implements a 16k text
and graphics buffer at B8000-BBFFF. The Hercules adapter uses
the entire 64k region at B0000-BFFFF in graphics modes, although
only the first 4k of this space (B0000-B0FFF) is used for text
modes.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 43
The EGA and VGA adapters have a 64k graphics display buffer at
A0000-AFFFF, and a 32k text display buffer at either B0000-B7FFF
(when used with a monochrome display), or at B8000-BFFFF (when
used with a color display).
The following chart summarizes these regions as well as some of
the DOS and APPEND optons you may be able to use on the
LASTBYTE.SYS command line with these adapters. Unfortunately,
the ROM bios on a (very) few PC's may write into locations
outside the area reserved for a particular type of display. If
you decide this is happening, you may need to add one or more
EXCLUDE options to the LASTBYTE.SYS command line to disable that
region.
LASTBYTE.SYS Command Line Options for Display Adapters
Adapter Reserved DOS APPEND
------- -------- ------- -------
CGA B800:16 96
MDA B000:4 64
Hercules B000:64 B400:48 64
EGA/VGA A000:64 BC00:16 96
w/Color B800:32
Display
EGA/VGA A000:64 B400:16 64
w/Mono B000:32
Display
VGA Bios C000:32 C600:8 (see next section)
Note: Windows 3.0 may write in the region B000-BFFF.
The ability to use the DOS and APPEND options depends on the
availability of other memory in the indicated area. For further
information, consult the appendix on "CHIPSET LIMITATIONS".
6.7 Video Adapter Bios ROMs
MDA and CGA use the standard ROM Bios; they have no ROM of their
own. EGA and VGA adapters, however, incorporate their own ROM
Bios chip right on the adapter card. LASTBYTE.SYS successfully
recognizes these ROMs, but has to treat VGA in a special manner:
The VGA adapter made by IBM has a 24k ROM installed at
C0000-C5FFF, which means that the 8k at C6000-C7FFF should be
usable. Although almost all VGA clones have a ROM signature
that indicates 24k, many of them use the C6000-C7FFF space for
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 44
ROM Bios or RAM extensions that provide their "Super VGA"
features. In particular, the Video7 and Paradise VGA's
incorporate their own RAM from C6000-C7FFF. (This may also be
true of other VGA boards that uses a VLSI chip manufactured by
Chips and Technologies, Tseng Labs, Paradise, or Headland
Technologies.) For this reason, when LASTBYTE.SYS finds
anybody's VGA adapter, it automatically assumes that there is a
32k ROM at C0000-C7FFF.
6.8 LASTBYTE.SYS and Expanded Memory
Expanded memory always has an associated device driver. If that
driver is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
if the hardware is enabled) LASTBYTE.SYS will recognize the 64k
EMM page frame of the expanded memory and do the right thing: It
will treat the page frame like any other adapter ram and disable
the motherboard RAM that falls in the same address space so that
it doesn't interfere with the page frame. For example, if the
EMM driver is loaded first, LASTBYTE.SYS will report the 64k EMM
page frame as "EMS Page Frame".
This works fine, of course, but loading the EMM driver first
precludes the possibility of loading it into upper memory. To
get the EMM driver into upper memory means that it must be
loaded after LASTBYTE.SYS, but you must be careful!
If LASTBYTE.SYS is loaded first, the page frame will be
recognized only in two cases:
o The page frame used by the expanded memory
controller built into some memory controller chips
will be recognized and reported as "EMS Page
Frame".
o The page frame of a REAL expanded memory board is
(if enabled) recognized and reported as "Adapter
RAM".
In either case, LASTBYTE.SYS will not use that memory space.
╔═════════════════════════════════════════════════╗
║ WARNING: Some EMS boards must be enabled by ║
║ their device driver before they respond as ║
║ read/write memory. This prevents LASTBYTE.SYS ║
║ from recognizing them, and you may need a ║
║ BANKSWITCH option to keep LASTBYTE.SYS from ║
║ using the page frame memory space. ║
╚═════════════════════════════════════════════════╝
If you don't have an expanded memory board, but have used a
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 45
device driver (like EMM386.SYS) that EMULATES expanded memory
using extended memory, then LASTBYTE.SYS will not know about the
page frame unless the emulator is loaded first. If LASTBYTE.SYS
is loaded first, then you must use a "EXCLUDE=" (not
"BANKSWITCH="!) command line option of LASTBYTE.SYS to reserve a
64k region where the emulated page frame can be placed. For
EMM386.SYS, the page frame must be positioned at C000, C400,
C800, CC00, D000, D400, D800, DC00, or E000.
6.9 Fine-Tuning your Adapter Hardware Configuration
Many adapter cards occupy some portion of the upper address
space. Some of these cards, such as SCSI Disk Controllers,
often have DIP switches or jumpers that can be used to set the
address space they occupy to one of a few alternatives.
If the memory map displayed by HIGHMEM is fragmented because one
of these adapters sits between two "....DOS Free" areas, you may
want to try to reposition the address space occupied by that
adapter by modifying the DIP switch or jumper settings on the
card.
Having one large free memory block is better than two smaller
ones because TSR's and device drivers almost always require more
memory during initialization than once installed. In other
words, neither of the two smaller blocks may be large enough for
the installation, but might if they were combined.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 46
CHAPTER 7 - USE WITH OTHER SOFTWARE
7.1 Microsoft's FASTOPEN and MODE programs
The FASTOPEN and MODE programs that come with MS-DOS are TSR's
and as such may be loaded into upper memory with either HIGHTSR
or HIGHINST. Once installed, each requires very little memory,
something on the order of 10k or less. However, neither will
install unless a lot of memory is available - approximately
50-90k. (The actual requirement depends partly on command line
options; you can determine the requirement using the /SIZE
option of HIGHTSR or HIGHINST.)
╔═════════════════════════════════════════════════╗
║ WARNING: Do NOT use the /LOW option of HIGHTSR ║
║ or HIGHINST with FASTOPEN or MODE - it won't ║
║ work and could damage data on your disk! ║
╚═════════════════════════════════════════════════╝
The worst part is that if FASTOPEN fails to install itself
successfully, it doesn't issue any error message - it simply
doesn't display the normal "FASTOPEN installed" sign-on
message. Moral: Let FASTOPEN and MODE be the first TSR's that
are installed into High Memory in your AUTOEXEC.BAT file so that
they get access to the maximum amount of memory.
The second hassle with these two TSR's is that they cannot be
removed by using HIGHMARK and HIGHUNDO. Evidently they modify
memory other than that tracked by HIGHMARK (the interrupt vector
table and that memory allocated to them).
7.2 Microsoft's SHARE program
MS-DOS 4 installs the SHARE program automatically if you have a
hard disk which is greater than 32 MB in a single partition. It
does this without asking because it is otherwise possible to
corrupt the data on the disk when running programs that use the
old File Control Block (FCB) approach to access files.
Unfortunately, some internal parts of MS-DOS 4.0 also still use
FCB's! So don't try to prevent SHARE from being loaded by
removing it from your system! If MS-DOS can't find it, you'll
get a warning message during the boot saying that "SHARE should
be loaded for large media". You could load it during
AUTOEXEC.BAT processing, but you'll still get the warning
because the check occurs during CONFIG.SYS processing.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 47
╔═════════════════════════════════════════════════╗
║ NOTE: Version 5 of MS-DOS has corrected this ║
║ problem and no longer loads SHARE automatically ║
║ regardless of the size of your hard disk. ║
╚═════════════════════════════════════════════════╝
So how can you load this TSR into upper memory without getting
the warning? MS-DOS recently introduced the "INSTALL="
directive that allows TSR's to be installed during CONFIG.SYS
processing. Programs that Microsoft suggests be loaded in this
manner include FASTOPEN, KEYB, NLSFUNC, and SHARE. For example:
INSTALL=C:\DOS\SHARE.EXE
The above command, however, causes SHARE to be loaded down in
conventional memory. to get it into upper memory, use:
INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
╔═════════════════════════════════════════════════╗
║ WARNING: Do NOT use the /LOW option of HIGHINST ║
║ with SHARE - it won't work and could damage ║
║ data on your disk! ║
╚═════════════════════════════════════════════════╝
7.3 Microsoft's MS-DOS 5.0
With the introduction of MS-DOS 5.0, Microsoft has added
extensive support for loading software into high memory. This
includes not only device drivers and TSRs, but also the MS-DOS
disk buffers, the master environment, and most of the operating
system itself.
This capability requires the use of an Upper Memory Block (UMB)
server such as Key Software Products' HIGHUMM.SYS. Although the
MS-DOS 5.0 version of EMM386.SYS has been modified to provide
such support, there are several disadvantages to using it
instead of The Last Byte Memory Manager to load software high:
o EMM386 requires a 386 or better processor.
(HIGHUMM does not.)
o EMM386 requires that HIMEM.SYS be loaded first.
(HIGHUMM does not. However, HIMEM is also needed
to load the operating system itself into extended
memory; The Last Byte Memory Manager allows you to
load HIMEM into upper memory using HIGHDRVR.)
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 48
o Using HIMEM and EMM386 as the basis of UMB support
requires that both be loaded into conventional
memory, where they use approximately 10k bytes.
o EMM386 puts the processor into protected mode,
adding an instruction execution time penalty of
about 5%.
There are two basic approaches that you can take to load
software into upper memory using MS-DOS 5.0 and The Last Byte
Memory Manager. The first of these is to install HIGHUMM and
use the 'DEVICEHIGH' and 'LOADHIGH' commands introduced in
MS-DOS 5.0; the other is to use HIGHDRVR and HIGHTSR
(HIGHINST).
We recommend the latter approach because HIGHDRVR and HIGHTSR
provide a richer set of options for controlling the load high
process.
7.3.1 Using DEVICEHIGH and LOADHIGH
To use this approach, your CONFIG.SYS file should contain the
following lines:
DOS=HIGH,UMB
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS
DEVICE=HIGHUMM.SYS {and any options}
Then you can use the MS-DOS 5.0 DEVICEHIGH command in additional
lines of your CONFIG.SYS file to load your other device drivers
into upper memory, as in:
DEVICEHIGH={device driver to be loaded high}
DEVICEHIGH={device driver to be loaded high}
. . .
DEVICEHIGH={device driver to be loaded high}
With this CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs
high using the MS-DOS 5.0 LOADHIGH command as in:
LOADHIGH C:\DOS\PRINT.COM
7.3.2 Using HIGHDRVR and HIGHTSR
The second approach is to use the HIGHDRVR and HIGHTSR utilities
of The Last Byte Memory Manager in the normal manner. To use
this approach, your CONFIG.SYS file should contain the following
lines:
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 49
DOS=HIGH
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS
Then you can use HIGHDRVR in additional lines of your CONFIG.SYS
file to load your other device drivers into upper memory, as in:
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
. . .
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
With this CONFIG.SYS file, your AUTOEXEC.BAT file should load
TSRs high using HIGHTSR as in:
HIGHTSR C:\DOS\PRINT.COM
7.4 Microsoft's Windows 3.0
In general, The Last Byte Memory Manager has a high degree of
compatibility with Windows 3.0. If you are having trouble
running Windows, first be sure that your system is properly
configured so that it runs without The Last Byte Memory Manager
installed. If you have isolated the problem to their
combination, then perhaps the following information will help to
correct the problem:
7.4.1 Modifying the Windows SYSTEM.INI File
With Windows 3.0 running in 386 enhanced mode, LASTBYTE.SYS and
Windows will both try to use the upper memory area, thus
creating a conflict. To avoid the conflict, you must ask
Windows to not use this region. This can be done with a
configuration option in the [386Enh] section of the Windows
SYSTEM.INI file:
EMMExclude=A000-FFFF
If you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
any region of the upper memory, then Windows may be told it is
ok to use that area. For example, if LASTBYTE.SYS is loaded
using the line:
DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
then you may use the following configuration option (in addition
to the EMMExclude option above) in your SYSTEM.INI file:
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 50
EMMInclude=D000-DFFF
The EMMInclude option will take precedence over the EMMExclude
option when the two overlap, as above.
On system with a single display (e.g., VGA), Windows will
sometimes write into the other display area (i.e., the
monochrome area, B0000-B7FFF). Some users may thus also find it
necessary to add the option "DualDisplay-True" to their
SYSTEM.INI file, or to use the option "EXCLUDE=B000:32" on the
LASTBYTE.SYS command line.
7.4.2 Positioning an EMS Page Frame
If you are using the Real or Standard modes of Windows, you may
have installed an EMS device driver for those applications that
need expanded memory. In an attempt to reduce fragmentation of
upper memory, it is useful to position the EMS Page Frame either
at the bottom or top of an otherwise empty region of upper
memory. However, if you have used the DOS=F000:32 option to
gain another 32k of DOS memory, don't position your EMS Page
Frame at E800 - Windows will not run with it any higher than
E000.
The Enhanced 386 mode of Windows will automatically emulate
expanded memory for those applications that require it.
Unfortunately, Windows ignores the EMMExclude option and
positions the EMS page frame in upper memory. If the same 64k
area is used by The Last Byte Memory Manager for something else,
your system may hang. To correct the problem, add an
"EMSPageFrame=nnnn" option in your SYSTEM.INI file to tell
Windows where to put the page frame, combined with an
"EXCLUDE=nnnn:64" option on the LASTBYTE.SYS command line to
keep it from using this area.
7.4.3 "Unsupported Data Configuration"
The 386 Enhanced mode of Windows 3.0 has a restriction that it
cannot run when certain types of software have been loaded
high. When this happens, Windows will terminate and display the
error message, "Unsupported Data Configuration". This only
happens in 386 Enhanced mode, and is not related in particular
to use of The Last Byte Memory Manager.
Device drivers that are known to load high without this problem
include HIMEM.SYS, MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the
Key Software Products device drivers. A device driver and a TSR
known to cause this problem are EGA.SYS and DOSKEY.COM. If you
are experiencing this error message, you can either run Windows
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 51
in another mode, or try modifying your CONFIG.SYS and
AUTOEXEC.BAT files to locate and remove the offending software.
Microsoft is removing this restriction in version 3.1 of Windows
which is expected to be released around the end of 1991.
7.4.4 HIGHMEM and Windows 386 Enhanced Mode
MS-DOS applications run from inside Windows 3.0 are given their
own "virtual" address space of 640k. Windows tells the
processor to map memory references in this space to the
particular 640k of physical memory which has been allocated to
the application. References outside this range are considered
invalid and thus return garbage. Since HIGHMEM is a program
that inspects upper memory between 640k and 1 meg, there's no
way it can execute properly in this context. HIGHMEM will
behave normally outside of Windows.
7.4.5 HIGHDISK and Windows 386 Enhanced Mode
HIGHDISK.SYS also uses memory in the 640k to 1 meg range and so
is susceptible to the same problems that HIGHMEM experiences as
discussed above. Outside of Windows, and in any mode other than
386 Enhanced Mode, HIGHDISK will behave normally.
7.5 HyperWare's HyperDisk
HyperDisk is a shareware disk caching utility. It's too large
to load high with HIGHDRVR or HIGHTSR under the 32K limit
imposed by the unlicensed evaluation version of The Last Byte
Memory Manager. However, if your computer uses a Chips and
Technologies NEAT or 386/AT chipset, you can work around this
limitation by using HyperDisk's "XS" option to load itself into
the 48k block starting at E400. Be sure to exclude this area by
using the following option on the LASTBYTE.SYS command line:
DEVICE=LASTBYTE.SYS EXC=E400:48
If you have a licensed version of The Last Byte Memory Manager,
or if you don't have one of the Chips and Technologies chipsets
mentioned above, then a better approach is to use either
HIGHDRVR or HIGHTSR (as appropriate) to load HyperDisk high
(without HyperDisk's "XS" option). This method guarantees that
the minimum amount of upper memory will be used.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 52
HyperDisk can be downloaded from HyperWare's BBS at (615)
864-6871, or obtained directly from:
HyperWare
RR#1, Box 91
Pall Mall, TN 38577
Voice: (615) 864-6868
FAX: (615) 864-6870
7.6 J.P. Software's 4DOS
4DOS is a shareware replacement for COMMAND.COM. HIGHUMM.SYS
may be used to move the 4DOS command processor and its master
environment into "Upper Memory Blocks" (UMB's) in the upper
memory area, thus reducing the amount of conventional memory
below 640k used by 4DOS from 3.4k bytes to 256 bytes.
First you must install HIGHUMM.SYS as described earlier in this
manual. Then add a "SHELL=" line to CONFIG.SYS for 4DOS,
including the options "/U" (to place the command processor in an
UMB) and "/E:512U" (to place the master environment in an UMB).
The value "512" is of course only an example - other environment
sizes may be specified. You may also want to specify these
options for secondary shells in the 4DSHELL environment
variable. Consult the 4DOS documentation for further details.
4DOS may be downloaded from Channel 1 BBS at (617) 354-8873, or
obtained directly from:
J.P. Software CompuServe: 75300,210
P.O. Box 1470 BIX: "trawson"
E. Arlington, MA 02174 Internet, Bitnet, etc:
Voice: (617) 646-3975 75300.210@compuserve.com
Fax: (617) 646-0904
7.7 David Hamilton's BUFFIT
There's a very nice shareware scroll-back TSR called BUFFIT that
saves lines of text that have been scrolled off the top of the
screen and allows you to pull them back down for review. One of
the advantages of version 3.0 and later of BUFFIT is that it
will load itself entirely into a UMB provided by HIGHUMM.SYS,
thus using no conventional memory at all.
To install BUFFIT into upper memory, first you must install the
HIGHUMM.SYS device driver by inserting the following lines in
your CONFIG.SYS file:
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 53
DEVICE=HIGHUMM.SYS
Then all you have to do is reboot your computer and run BUFFIT
from the command line, or else add it to your AUTOEXEC.BAT
file.
BUFFIT is available from a number of BBS's, usually under the
filename BUFFIT30.ZIP.
7.8 Charles Lazo's WAS
On a computer with no expanded memory, you might want to use
HIGHEMS3 to provide some Expanded Memory for Charles Lazo's
scroll-back TSR, WAS.COM. This utility saves lines of text that
have been scrolled off the top of the screen and allows you to
pull them back down for review. WAS is available from a number
of BBS's, usually under the filename WAS062.ZIP.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 54
APPENDIX 1 - HOW TO REACH US
The KSP telephone (415-364-9847) is shared by our BBS and our
voice mail answering system. Approximate hours of operation
are:
Voice mail system: 8am - 5pm PST (weekdays)
BBS system: 5pm - 8am PST (24 hrs on weekends)
BBS Parameters: 1200/2400/9600 baud (v.32, v.42bis)
8 data bits, No Parity
If your call is answered by the voice mail system, it can take a
message that will be automatically forwarded to someone who can
return your call as soon as possible. In addition, it offers a
touch-tone driven menu of useful information about our product.
If you have access to electronic mail, you can send us a message
via any of the following:
On BITNET, send mail to: DLEWIS@SCU.BITNET
On COMPUSERVE, send mail to: >Internet:DLEWIS@SCUACC.SCU.EDU
On CONNECT, send mail to: CONNECT id "DASNET"
1st line of message: \"DLEWIS@SCUACC.SCU.EDU\"@DASNET
On FIDONET, send mail to: UUCP
1st line of message: To: DLEWIS@SCUACC.SCU.EDU
On INTERNET, send mail to: DLEWIS@SCUACC.SCU.EDU
On MCI,
At the "To:" prompt enter: DLEWIS (EMS)
At the "EMS:" prompt enter: Internet
At the "Mbx:" prompt enter: DLEWIS@SCUACC.SCU.EDU
On PRODIGY, send mail to: VGDC59A
On TELENET's Telemail Service:
Send to: [INTERMAIL/USCISI]TELEMAIL/USA
1st line of message: Forward: ARPA
2nd line of message: To: DLEWIS@SCUACC.SCU.EDU
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 55
APPENDIX 2 - ACKNOWLEDGEMENTS
The Last Byte Memory Manager wouldn't exist without all the
companies that manufacture the shadow ram memory controller
chips, and who have provided techinical information on how to
program their configuration registers. If you know of a memory
controller chip we haven't included, please let us know and we
will try to add it.
The Last Byte Memory Manager consists of more than half a
megabyte of source code, written mostly in C with a sprinkling
of assembly language, and compiled using version 3.1 of the
DeSmet/C-Ware C compiler. We are grateful for the simplicity,
flexibility, and speed of this compiler, as well as the generous
support provided by Joel and Susan Farley of C-Ware
Corporation.
The Last Byte Memory Manager could not have been created without
the gracious support of many people. We wish to thank the
following individuals who helped to test beta versions or
offered useful suggestions for new features: J.B. Compton, David
Durgee, Mike Hagerty, Scott Jordahl, Alan Lambert, Rob Nee,
Kevin Parris, Dan Proctor, Graham Robertson, Ken Sanquist, Tony
Sheehan, Peter Summers, Steve Hodsdon, Anthony Cox, My Phung,
and Martin Beckmann.
Thank's also go to Tom Rawson of J. P. Software for providing a
copy of 4DOS, to Sue Nageotte of Digital Research for providing
a copy of DR DOS, and to Pat Gelsinger of Intel Corporation for
lending his intimate knowledge of the 80x86 instruction sets.
And finally, a special thanks to Serge Caron and Roger Cross for
their suggestions, technical advice, patience, and friendship.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 56
APPENDIX 3 - CHIPSET LIMITATIONS
Some of the features offered by The Last Byte Memory Manager are
dependent on the presence of a shadow ram memory controller
chip, what memory it controls, and the organization of that
memory into regions. Shown below is a summary of RAM and ROM
regions controlled by each of the memory controller chips that
we support. Each entry indicates the starting segment address
of memory, followed by an indication of the organization of that
memory into regions.
Part Ram Range RAM Regions ROM Regions
------ --------- ---------- -----------
36C300 C000-FFFF C000:6x32k,1x64k n/a
62C202 E000-FFFF E000:4x32k n/a
62C241 E000-FFFF E000:4x32k n/a
62C251 E000-FFFF E000:4x32k n/a
82C202 A000-FFFF A000:6x64k n/a
82C212 A000-FFFF A000:24x16k C000:4x64k
82C222 A000-FFFF A000:24x16k C000:4x64k
82C230 A000-FFFF A000:24x16k C000:4x64k
82C235 A000-FFFF A000:24x16k C000:8x32k
82C241 A000-FFFF A000:24x16k C000:4x64k
82C281 C000-EFFF C000:12x16k C000:3x64k
82C282 C000-EFFF C000:12x16k C000:3x64k
82C302 A000-FFFF A000:24x16k C000:4x64k
82C307 A000-FFFF A000:24x16k C000:4x64k
82C311 A000-FFFF A000:24x16k C000:4x64k
82C322 A000-FFFF A000:16x16k,1x128k C000:2x64k,1x128k
82C351 A000-FFFF A000:24x16k C000:4x64k
82C361 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
82C382 C000-EFFF C000:12x16k C000:3x64k
82C391 C000-EFFF C000:12x16k C000:3x64k
82411 A000-FFFF A000:24x16k C000:4x64k
82S411 A000-FFFF A000:24x16k C000:4x64k
82C461 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
82C481 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
82C482 C000-EFFF C000:12x16k C000:3x64k
82C491 C000-EFFF C000:12x16k C000:3x64k
82C812 A000-FFFF A000:24x16k C000:4x64k
82C836 A000-FFFF A000:24x16k C000:8x32k
82C841 A000-FFFF A000:24x16k C000:4x64k
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 57
APPENDIX 4 - LICENSED DISTRIBUTORS
You can order directly from Key Software Products or any of the
licensed distributors listed below. Those which can accept
credit card orders are noted. If you order by credit card, you
must indicate the type of card, the card number, your name
exactly as printed on the card, and the card expiration date.
Information in this list is subject to change without notice.
Foreign exchange rates vary and thus affect overseas pricing, so
it is a good idea to check with the distributor before
ordering.
Distributors are for ordering only. For additional information
about dealer pricing, volume discounts, site licensing, shipping
of product, returns, latest version number or other technical
information, call or write Key Software Products directly.
Most distributors can provide the access key directly. The
Public (software) Library, however, accepts your telephone
order, and then forwards an E-Mail message to Key Software
Products. Delivery of this message may take one or two days. We
will contact you and provide the access key upon receipt of this
purchase confirmation.
Companies interested in obtaining 10 or more copies of The Last
Byte Memory Manager with discounted pricing should have an
officer of the company (such as the president, a vice president,
director, etc.) complete the Site License Order Form and send it
directly to Key Software Products, to the BRISBUG Brisbane PC
User's Group in Australia, British Software Licensing in the
United Kingdom, or to Eurocom Shareware in Holland. No other
distributor will process a Site License request.
KEY SOFTWARE PRODUCTS Phone: (415) 364-9847
440 Ninth Avenue Price: US $29.95 + Tax (CA)
Menlo Park, CA 94025 Method: Check
The Public (software) Library Phone: (800) 242-4775, or
P.O. Box 35705 (713) 524-6394
Houston, Texas 77235-5705 FAX: (713) 524-6398
CompuServe: 71355,470
Price: US $29.95 + Tax (TX)
Method: MC, Visa, AmEx,
Discover Card
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 58
HYPERWARE (makes HyperDisk) Phone: (615) 864-6868
RR#1, Box 91 FAX: (615) 864-6870
Pall Mall, TN 38577 CompuServe: 72230,2321
Price: US $29.95 + Tax (TN)
Method: Master Card, Visa
BRISBUG Brisbane PC User's Group
18 Headland St Contact: Mr. Dan Bridges
SUNNYBANK Phone: (61.7) 345-9298
Queensland 4109 Price: AUS $45 (incl. post.)
AUSTRALIA Method: Check
EUROCOM SHAREWARE Contact: Mr. Gary van Beeck
Zwedenburg 119 Phone: (+31.70) 347-3777
NL-2591 BD The Hague FAX: (+31.70) 347-7356
HOLLAND Price: Hfl 74.-- (guilders only)
Method: By Eurocheque, or
Postbank (Giro): 304747
payable to: G. van Beeck
BRITISH SOFTWARE LICENSING Contact: Mr. Graham Robertson
280 (T/L) West Princes Street Phone: (44.41) 339-8855 x5021
Glasgow G4 9EU (44.41) 339-7264 (msg)
UNITED KINGDOM Price: 21 pounds
Method: Access, Visa, MC, Eurocard
Internet E-Mail: Graham_Robertson@vme.glasgow.ac.uk
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
Jul 31, 1991 THE LAST BYTE MEMORY MANAGER (tm) 59
APPENDIX 5 - LIMITED WARRANTY
This software is provided 'as is' without warranty of any kind,
either expressed or implied, including, but not limited to the
implied warranties of merchantability and fitness for a
particular purpose. The entire risk as to the quality and
performance of the program is with you.
Some states do not allow the exclusion of implied warranties, so
the above exclusions may not apply to you. This warranty gives
you specific legal rights and you may also have other rights
which vary from state to state.
Key Software Products has taken due care in preparing the
documentation and software included in The Last Byte Memory
Manager to ascertain their correctness and effectiveness.
However, Key Software Products does not warrant that operation
of this software will be uninterrupted or error free. In no
event shall Key Software Products be liable for incidental or
consequential damages in connection with or arising out of the
furnishing, performance, or use of this software.
LICENSE
You MAY use this software on any computer or computers in your
possesion, but on no more than one computer at any given time.
You MAY copy this software into any machine readable or printed
form for backup or modification purposes in support of your use
of the software.
You MAY distribute the original unmodified, unlicensed version
of this software, but you may not charge a fee exceeding $5.00
to cover the cost of duplicating, shipping, and handling. You
may NOT distribute a licensed version of this software.
You may NOT use, copy, modify, sublicense, assign or transfer
this software and its license, or any copy or modification, in
whole or in part, except as expressly provided for in this
license.
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
THE LAST BYTE MEMORY MANAGER (tm)
Table of Contents
CHAPTER 1 - INTRODUCTION ........................... 2
1.1 Important Advantages ........................ 2
CHAPTER 2 - SYSTEM REQUIREMENTS ..................... 4
2.1 Supported Hardware .......................... 4
2.2 Checking Compatibility Using CHIPSET .......... 6
CHAPTER 3 - DISTRIBUTION FILES ...................... 8
CHAPTER 4 - GETTING STARTED ......................... 10
4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE 10
4.2 Mapping Upper Memory with HIGHMEM .............. 12
4.3 Running the LICENSE Program ................... 14
CHAPTER 5 - DETAILED DESCRIPTIONS ................... 16
5.1 LASTBYTE.SYS ............................... 16
5.2 HIGHAPND.EXE and HIGHAPND.SYS ................ 21
5.3 HIGHBFRS.EXE (MS-DOS 3 only) .................. 24
5.4 HIGHDISK.SYS ............................... 25
5.5 HIGHDRVR.SYS ............................... 26
5.6 HIGHEMS3.SYS and HIGHEMS4.SYS ................ 27
5.7 HIGHENV.EXE ................................ 28
5.8 HIGHHOLE.EXE ............................... 30
5.9 HIGHINST.EXE ............................... 30
5.10 HIGHKEY.EXE ............................... 31
5.10.1 Options .............................. 31
5.10.2 Editing Commands ...................... 31
5.11 HIGHMARK.EXE .............................. 33
5.12 HIGHMEM.EXE ............................... 34
5.13 HIGHSPLR.EXE .............................. 34
5.14 HIGHTSR.EXE ............................... 35
5.14.1 The /NOENV Option ...................... 36
5.15 HIGHUMM.SYS ............................... 37
5.16 HIGHUNDO.EXE .............................. 38
CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS ......... 39
6.1 The /SIZE Option ............................. 39
6.2 The /LOW Option .............................. 40
6.3 The /RESTRICT Option ......................... 40
6.4 Specifying Command Line Options with Indirect Files 41
6.5 Using the DOS=F000:32 Option .................. 41
6.6 Video Display RAM above 640k ................... 42
6.7 Video Adapter Bios ROMs ....................... 43
6.8 LASTBYTE.SYS and Expanded Memory .............. 44
6.9 Fine-Tuning your Adapter Hardware Configuration 45
CHAPTER 7 - USE WITH OTHER SOFTWARE ................... 46
7.1 Microsoft's FASTOPEN and MODE programs ......... 46
Copyright (C) 1990-91, Key Software Products. All Rights Reserved
THE LAST BYTE MEMORY MANAGER (tm)
7.2 Microsoft's SHARE program .................... 46
7.3 Microsoft's MS-DOS 5.0 ....................... 47
7.3.1 Using DEVICEHIGH and LOADHIGH ............ 48
7.3.2 Using HIGHDRVR and HIGHTSR ............... 48
7.4 Microsoft's Windows 3.0 ...................... 49
7.4.1 Modifying the Windows SYSTEM.INI File ..... 49
7.4.2 Positioning an EMS Page Frame ............. 50
7.4.3 "Unsupported Data Configuration" ........ 50
7.4.4 HIGHMEM and Windows 386 Enhanced Mode ...... 51
7.4.5 HIGHDISK and Windows 386 Enhanced Mode ..... 51
7.5 HyperWare's HyperDisk ....................... 51
7.6 J.P. Software's 4DOS ......................... 52
7.7 David Hamilton's BUFFIT ...................... 52
7.8 Charles Lazo's WAS ........................... 53
APPENDIX 1 - HOW TO REACH US .......................... 54
APPENDIX 2 - ACKNOWLEDGEMENTS ...................... 55
APPENDIX 3 - CHIPSET LIMITATIONS .................... 56
APPENDIX 4 - LICENSED DISTRIBUTORS .................. 57
APPENDIX 5 - LIMITED WARRANTY ....................... 59
Copyright (C) 1990-91, Key Software Products. All Rights Reserved